{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>title</th>\n",
       "      <th>house_type</th>\n",
       "      <th>area</th>\n",
       "      <th>orientation</th>\n",
       "      <th>floor_type</th>\n",
       "      <th>floor</th>\n",
       "      <th>decoration</th>\n",
       "      <th>address</th>\n",
       "      <th>house_name</th>\n",
       "      <th>transportation</th>\n",
       "      <th>add_time</th>\n",
       "      <th>visit_times</th>\n",
       "      <th>stars</th>\n",
       "      <th>price</th>\n",
       "      <th>rent_way</th>\n",
       "      <th>advantage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>\\n狮山·天都花园·3室\\n</td>\n",
       "      <td>3室2厅</td>\n",
       "      <td>140.00</td>\n",
       "      <td>南</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>30</td>\n",
       "      <td>精装</td>\n",
       "      <td>狮山</td>\n",
       "      <td>天都花园</td>\n",
       "      <td>距离地铁玉山路445米</td>\n",
       "      <td>2023-05-28</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>5500</td>\n",
       "      <td>整租</td>\n",
       "      <td>近地铁随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>\\n独墅湖高教区·建屋海德公园·3室\\n</td>\n",
       "      <td>3室2厅</td>\n",
       "      <td>109.20</td>\n",
       "      <td>南</td>\n",
       "      <td>低楼层</td>\n",
       "      <td>33</td>\n",
       "      <td>简装</td>\n",
       "      <td>独墅湖高教区</td>\n",
       "      <td>建屋海德公园</td>\n",
       "      <td>距离地铁金谷路876米</td>\n",
       "      <td>2023-06-02</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5000</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>\\n科技城·永新秀郡·3室\\n</td>\n",
       "      <td>3室2厅</td>\n",
       "      <td>90.00</td>\n",
       "      <td>南北</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>18</td>\n",
       "      <td>精装</td>\n",
       "      <td>科技城</td>\n",
       "      <td>永新秀郡</td>\n",
       "      <td>永新秀郡</td>\n",
       "      <td>2023-05-25</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>3000</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>\\n狮山·狮山当代ΜΟΜΛ·2室\\n</td>\n",
       "      <td>2室1厅</td>\n",
       "      <td>53.45</td>\n",
       "      <td>南</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>22</td>\n",
       "      <td>精装</td>\n",
       "      <td>狮山</td>\n",
       "      <td>狮山当代ΜΟΜΛ</td>\n",
       "      <td>距离地铁金枫路191米</td>\n",
       "      <td>2023-05-14</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3300</td>\n",
       "      <td>整租</td>\n",
       "      <td>近地铁随时看拎包入住</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>\\n湖东·海悦花园四区·2室\\n</td>\n",
       "      <td>2室2厅</td>\n",
       "      <td>90.01</td>\n",
       "      <td>南北</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>27</td>\n",
       "      <td>精装</td>\n",
       "      <td>湖东</td>\n",
       "      <td>海悦花园四区</td>\n",
       "      <td>距离地铁星塘街站743米</td>\n",
       "      <td>2023-06-19</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4000</td>\n",
       "      <td>整租</td>\n",
       "      <td>近地铁随时看</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  title house_type    area orientation floor_type  floor  \\\n",
       "0        \\n狮山·天都花园·3室\\n       3室2厅  140.00         南          中楼层     30   \n",
       "1  \\n独墅湖高教区·建屋海德公园·3室\\n       3室2厅  109.20         南          低楼层     33   \n",
       "2       \\n科技城·永新秀郡·3室\\n       3室2厅   90.00        南北          中楼层     18   \n",
       "3    \\n狮山·狮山当代ΜΟΜΛ·2室\\n       2室1厅   53.45         南          高楼层     22   \n",
       "4      \\n湖东·海悦花园四区·2室\\n       2室2厅   90.01        南北          高楼层     27   \n",
       "\n",
       "  decoration address house_name transportation      add_time  visit_times  \\\n",
       "0         精装      狮山       天都花园    距离地铁玉山路445米    2023-05-28            2   \n",
       "1         简装  独墅湖高教区     建屋海德公园    距离地铁金谷路876米    2023-06-02            1   \n",
       "2         精装     科技城       永新秀郡           永新秀郡    2023-05-25            1   \n",
       "3         精装      狮山   狮山当代ΜΟΜΛ    距离地铁金枫路191米    2023-05-14            3   \n",
       "4         精装      湖东     海悦花园四区   距离地铁星塘街站743米    2023-06-19            1   \n",
       "\n",
       "   stars  price rent_way   advantage  \n",
       "0      1   5500       整租      近地铁随时看  \n",
       "1      1   5000       整租         随时看  \n",
       "2      4   3000       整租         随时看  \n",
       "3      1   3300       整租  近地铁随时看拎包入住  \n",
       "4      0   4000       整租      近地铁随时看  "
      ]
     },
     "execution_count": 163,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "df = pd.read_excel('/Users/xlq/Downloads/python_data/我爱我家租房数据.xlsx')\n",
    "\n",
    "# 表头转为英文\n",
    "df.columns = ['title','house_type','area','orientation','floor_type','floor','decoration','address','house_name','transportation','add_time','visit_times','stars','price','rent_way','advantage','url']\n",
    "\n",
    "# 删除 url 列\n",
    "df.drop('url',axis='columns',inplace=True)\n",
    "\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>title</th>\n",
       "      <th>house_type</th>\n",
       "      <th>area</th>\n",
       "      <th>orientation</th>\n",
       "      <th>floor_type</th>\n",
       "      <th>floor</th>\n",
       "      <th>decoration</th>\n",
       "      <th>address</th>\n",
       "      <th>house_name</th>\n",
       "      <th>transportation</th>\n",
       "      <th>add_time</th>\n",
       "      <th>visit_times</th>\n",
       "      <th>stars</th>\n",
       "      <th>price</th>\n",
       "      <th>rent_way</th>\n",
       "      <th>advantage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>535</th>\n",
       "      <td>\\n香山·中信太湖城浩阁·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>50.0</td>\n",
       "      <td>南</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>9</td>\n",
       "      <td>简装</td>\n",
       "      <td>香山</td>\n",
       "      <td>中信太湖城浩阁</td>\n",
       "      <td>中信太湖城浩阁</td>\n",
       "      <td>今天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>1300</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>\\n木渎·浙建枫华广场·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>52.0</td>\n",
       "      <td>南</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>12</td>\n",
       "      <td>简装</td>\n",
       "      <td>木渎</td>\n",
       "      <td>浙建枫华广场</td>\n",
       "      <td>距离地铁金枫路669米</td>\n",
       "      <td>今天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "      <td>1350</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 title house_type  area orientation floor_type  floor  \\\n",
       "535  \\n香山·中信太湖城浩阁·1室\\n       1室1厅  50.0         南          中楼层      9   \n",
       "65    \\n木渎·浙建枫华广场·1室\\n       1室1厅  52.0         南          高楼层     12   \n",
       "\n",
       "    decoration address house_name transportation add_time  visit_times  stars  \\\n",
       "535         简装      香山    中信太湖城浩阁        中信太湖城浩阁     今天发布            0      6   \n",
       "65          简装      木渎     浙建枫华广场    距离地铁金枫路669米     今天发布            0     22   \n",
       "\n",
       "     price rent_way advantage  \n",
       "535   1300       整租       随时看  \n",
       "65    1350       整租       随时看  "
      ]
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 需求1：找到租金最低和最高的房子\n",
    "\n",
    "# 需求9：最受欢迎的房型\n",
    "# 需求10：房子的平均租房价格（元/平米）\n",
    "# 需求11：热门小区（看房人数最多的小区）\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# df[df.price == df.price.max()]\n",
    "# df.sort_values('price',ascending=False).head(1)\n",
    "df.nsmallest(2,'price')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>title</th>\n",
       "      <th>house_type</th>\n",
       "      <th>area</th>\n",
       "      <th>orientation</th>\n",
       "      <th>floor_type</th>\n",
       "      <th>floor</th>\n",
       "      <th>decoration</th>\n",
       "      <th>address</th>\n",
       "      <th>house_name</th>\n",
       "      <th>transportation</th>\n",
       "      <th>add_time</th>\n",
       "      <th>visit_times</th>\n",
       "      <th>stars</th>\n",
       "      <th>price</th>\n",
       "      <th>rent_way</th>\n",
       "      <th>advantage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>599</th>\n",
       "      <td>\\n元和·紫珺兰园·3室\\n</td>\n",
       "      <td>3室2厅</td>\n",
       "      <td>96.0</td>\n",
       "      <td>南</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>25</td>\n",
       "      <td>简装</td>\n",
       "      <td>元和</td>\n",
       "      <td>紫珺兰园</td>\n",
       "      <td>距离地铁富元路237米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>4200</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>453</th>\n",
       "      <td>\\n横塘·中锐星悦湾名苑·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>41.0</td>\n",
       "      <td>西</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>22</td>\n",
       "      <td>简装</td>\n",
       "      <td>横塘</td>\n",
       "      <td>中锐星悦湾名苑</td>\n",
       "      <td>距离地铁横塘站625米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>11</td>\n",
       "      <td>1750</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179</th>\n",
       "      <td>\\n狮山·新创竹园·3室\\n</td>\n",
       "      <td>3室2厅</td>\n",
       "      <td>93.0</td>\n",
       "      <td>南北</td>\n",
       "      <td>低楼层</td>\n",
       "      <td>6</td>\n",
       "      <td>简装</td>\n",
       "      <td>狮山</td>\n",
       "      <td>新创竹园</td>\n",
       "      <td>距离地铁汾湖路552米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>3000</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>451</th>\n",
       "      <td>\\n观前街·九九玄妙·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>43.0</td>\n",
       "      <td>南</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>观前街</td>\n",
       "      <td>九九玄妙</td>\n",
       "      <td>距离地铁临顿路364米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "      <td>1850</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>450</th>\n",
       "      <td>\\n狮山·新升新苑问梅苑·2室\\n</td>\n",
       "      <td>2室1厅</td>\n",
       "      <td>64.0</td>\n",
       "      <td>南北</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>6</td>\n",
       "      <td>NaN</td>\n",
       "      <td>狮山</td>\n",
       "      <td>新升新苑问梅苑</td>\n",
       "      <td>距离地铁汾湖路395米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2300</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>449</th>\n",
       "      <td>\\n狮山·津西新天地·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>51.0</td>\n",
       "      <td>南</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>17</td>\n",
       "      <td>NaN</td>\n",
       "      <td>狮山</td>\n",
       "      <td>津西新天地</td>\n",
       "      <td>距离地铁何山站476米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>24</td>\n",
       "      <td>2900</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>183</th>\n",
       "      <td>\\n元和·康桥丽都·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>35.0</td>\n",
       "      <td>南</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>20</td>\n",
       "      <td>简装</td>\n",
       "      <td>元和</td>\n",
       "      <td>康桥丽都</td>\n",
       "      <td>距离地铁阳澄湖中路304米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>27</td>\n",
       "      <td>1900</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>448</th>\n",
       "      <td>\\n狮山·嘉业阳光假日五期·2室\\n</td>\n",
       "      <td>2室2厅</td>\n",
       "      <td>89.0</td>\n",
       "      <td>南北</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>16</td>\n",
       "      <td>NaN</td>\n",
       "      <td>狮山</td>\n",
       "      <td>嘉业阳光假日五期</td>\n",
       "      <td>距离地铁金枫路512米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>3200</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>186</th>\n",
       "      <td>\\n平江新城·万达广场(姑苏区)·1室\\n</td>\n",
       "      <td>1室1厅</td>\n",
       "      <td>37.0</td>\n",
       "      <td>北</td>\n",
       "      <td>高楼层</td>\n",
       "      <td>17</td>\n",
       "      <td>简装</td>\n",
       "      <td>平江新城</td>\n",
       "      <td>万达广场(姑苏区)</td>\n",
       "      <td>距离地铁平泷路东286米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>2000</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>191</th>\n",
       "      <td>\\n湖东CBD·澳韵花园·2室\\n</td>\n",
       "      <td>2室2厅</td>\n",
       "      <td>88.0</td>\n",
       "      <td>南北</td>\n",
       "      <td>中楼层</td>\n",
       "      <td>15</td>\n",
       "      <td>NaN</td>\n",
       "      <td>湖东CBD</td>\n",
       "      <td>澳韵花园</td>\n",
       "      <td>距离地铁苏州奥体中心站669米</td>\n",
       "      <td>昨天发布</td>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>3800</td>\n",
       "      <td>整租</td>\n",
       "      <td>随时看</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     title house_type  area orientation floor_type  floor  \\\n",
       "599         \\n元和·紫珺兰园·3室\\n       3室2厅  96.0         南          高楼层     25   \n",
       "453      \\n横塘·中锐星悦湾名苑·1室\\n       1室1厅  41.0         西          中楼层     22   \n",
       "179         \\n狮山·新创竹园·3室\\n       3室2厅  93.0        南北          低楼层      6   \n",
       "451        \\n观前街·九九玄妙·1室\\n       1室1厅  43.0         南          中楼层      5   \n",
       "450      \\n狮山·新升新苑问梅苑·2室\\n       2室1厅  64.0        南北          中楼层      6   \n",
       "449        \\n狮山·津西新天地·1室\\n       1室1厅  51.0         南          高楼层     17   \n",
       "183         \\n元和·康桥丽都·1室\\n       1室1厅  35.0         南          高楼层     20   \n",
       "448     \\n狮山·嘉业阳光假日五期·2室\\n       2室2厅  89.0        南北          中楼层     16   \n",
       "186  \\n平江新城·万达广场(姑苏区)·1室\\n       1室1厅  37.0         北          高楼层     17   \n",
       "191      \\n湖东CBD·澳韵花园·2室\\n       2室2厅  88.0        南北          中楼层     15   \n",
       "\n",
       "    decoration address house_name   transportation add_time  visit_times  \\\n",
       "599         简装      元和       紫珺兰园      距离地铁富元路237米     昨天发布            0   \n",
       "453         简装      横塘    中锐星悦湾名苑      距离地铁横塘站625米     昨天发布            0   \n",
       "179         简装      狮山       新创竹园      距离地铁汾湖路552米     昨天发布            0   \n",
       "451        NaN     观前街       九九玄妙      距离地铁临顿路364米     昨天发布            0   \n",
       "450        NaN      狮山    新升新苑问梅苑      距离地铁汾湖路395米     昨天发布            0   \n",
       "449        NaN      狮山      津西新天地      距离地铁何山站476米     昨天发布            0   \n",
       "183         简装      元和       康桥丽都    距离地铁阳澄湖中路304米     昨天发布            0   \n",
       "448        NaN      狮山   嘉业阳光假日五期      距离地铁金枫路512米     昨天发布            0   \n",
       "186         简装    平江新城  万达广场(姑苏区)     距离地铁平泷路东286米     昨天发布            0   \n",
       "191        NaN   湖东CBD       澳韵花园  距离地铁苏州奥体中心站669米     昨天发布            0   \n",
       "\n",
       "     stars  price rent_way advantage  \n",
       "599     10   4200       整租       随时看  \n",
       "453     11   1750       整租       随时看  \n",
       "179      6   3000       整租       随时看  \n",
       "451     12   1850       整租       随时看  \n",
       "450      2   2300       整租       随时看  \n",
       "449     24   2900       整租       随时看  \n",
       "183     27   1900       整租       随时看  \n",
       "448      7   3200       整租       随时看  \n",
       "186      4   2000       整租       随时看  \n",
       "191     18   3800       整租       随时看  "
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 需求2：找到最近新上的10套房源\n",
    "df.sort_values('add_time',ascending=False).head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       2023-05-28\n",
       "1       2023-06-02\n",
       "2       2023-05-25\n",
       "3       2023-05-14\n",
       "4       2023-06-19\n",
       "5       2023-04-22\n",
       "7       2023-05-19\n",
       "10      2023-06-18\n",
       "12      2023-05-11\n",
       "13      2023-03-16\n",
       "14      2023-06-04\n",
       "15      2023-06-12\n",
       "16      2023-04-11\n",
       "17      2023-03-27\n",
       "18      2023-04-02\n",
       "19      2023-04-14\n",
       "22      2023-04-09\n",
       "24      2023-06-09\n",
       "25      2023-03-11\n",
       "26      2023-05-07\n",
       "27      2023-04-07\n",
       "28      2022-09-22\n",
       "30      2023-04-29\n",
       "31      2023-04-23\n",
       "33      2022-08-05\n",
       "34      2023-03-26\n",
       "36      2023-03-06\n",
       "37      2023-02-02\n",
       "38      2023-04-28\n",
       "39      2023-03-28\n",
       "40      2022-04-10\n",
       "41      2022-07-02\n",
       "42      2022-12-30\n",
       "48      2023-06-11\n",
       "49            昨天发布\n",
       "50            今天发布\n",
       "Name: add_time, dtype: object"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 需求3：查看所有更新时间，细节：去重\n",
    "# df.add_time.unique()\n",
    "df.add_time.drop_duplicates()\n",
    "# df.loc[:,['add_time']].drop_duplicates()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>stars</th>\n",
       "      <th>counts</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>12</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>10</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    stars  counts\n",
       "1       1      47\n",
       "7       7      38\n",
       "12     12      37\n",
       "5       5      36\n",
       "3       3      35\n",
       "4       4      33\n",
       "2       2      28\n",
       "6       6      28\n",
       "10     10      27\n",
       "0       0      26"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 需求4：不同看房人数的房源数量\n",
    "tmp_df = df.groupby('stars',as_index=False)['house_name'].count()\n",
    "tmp_df.columns = ['stars','counts']\n",
    "\n",
    "tmp_df.sort_values('counts',ascending=False).head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 195,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh0AAAGdCAYAAAC2OMGiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABODklEQVR4nO3dB3iV9dn48Tt7D3ZIWGGLCxCZakGr4nr/VqStVWulVVGxtlWr1LdV61uxWqvWAdZZW7UuXLhtFRBkCYiyNwTCHgnZ4/yv+3fynJzsk5z15Dzfz3XlyslJSB6OwXOfe/2iXC6XSwAAAIIsOtg/AAAAQBF0AACAkCDoAAAAIUHQAQAAQoKgAwAAhARBBwAACAmCDgAAEBIEHQAAICRixSaqq6tl9+7dkpaWJlFRUeG+HAAA4APdMVpYWCjZ2dkSHR3dPoIODTh69uwZ7ssAAABtsHPnTunRo0f7CDo0w2FddHp6ergvBwAA+KCgoMAkDazn8XYRdFglFQ04CDoAAGhffGmNoJEUAACEBEEHAAAICYIOAAAQErbp6QAAoK0jm5WVlVJVVRXuS4lIMTExEhsbG5B1FgQdAIB2q7y8XPLz86W4uDjclxLRkpOTpXv37hIfH+/X9yHoAAC0S7pUcuvWreaVuC6m0idElksGPoukgd3+/fvNYz1gwIAWF4A1h6ADANAu6ZOhBh66I0JfiSM4kpKSJC4uTrZv324e88TExDZ/LxpJAQDtmj+vvBHax5j/UgAAICQIOgAAQEgQdAAA4AAbN26U999/P6zXQNABAIADXHvttbJ06dKwXoPjgw4dB3rxq23y9fZD4b4UAACC+nwXbo4POtbkF8gf3lkt02d/G+5LAQAE4Im1uLwyLG+teVLftGmTTJw4UVJSUqR3797yt7/9zdy/YcMGOe+88yQjI0NycnLk3nvvNWPB6u6775bx48fX+T59+vSRF154wdz+2c9+Jrfccov86Ec/Mt938ODB8sorr3g+N3fuXLnnnns83+OJJ54wP1vHjUeNGiVLliyRYHP8no4Dx8rN+/2FZeG+FACAn0oqqmTIHz4Oy89e88dzJTm+5afVsrIyOffcc2X06NGyfPly2bZtm0yaNMkEGho06G0NQtatWydTpkyR1NRU+fWvf+3TNWgg8cADD8iDDz4ojz32mFxzzTVywQUXyOOPP256OsaNGyd33nmnLFu2TH7zm9/IO++8IyeccILMnDnT/NwdO3YEdcGa4zMdx0orzfvC0tZFqQAAtMXHH38s+/btk6eeekoGDRpkAhANEI4cOWIyFBo46ObPiy66yGQ67r//fp+/96mnniq//OUvpVevXjJ9+nQpKiqSNWvWmMBFF3xpVkODm7y8PHOeiq4279Gjh/zv//6vvPjii56sSrA4PtNRVOYOOiqrXVJaUS1J8THhviQAQBslxcWYjEO4frYvNmzYYIINDQQsV199tVx//fVyyimnmGDAMnbsWBOgHD582KfvreUWS8eOHT2Zlfo00BkyZIgMHTrUZDo0wNGfryvlg8nxQUdhTdBhbpdWEHQAQDumpQFfShzhFBsb22Rmvf79VuZBT9FtrOyh93trLGho7GfpavPFixfLZ599Jh988IHp/fj73/8uX3/9tenzCBbHl1esTEf9AAQAgGAYPHiwyXZo6cNy++23y7/+9S/zpF9RUeG5/6uvvpJOnTpJly5dTKDg/Wf09t69e33+ud5By+effy4zZsyQc845Rx555BFZu3atyYgEu5mUoKNOpoOgAwAQXGeffbaZTLnhhhtMc+enn35qsgza7KmBxNSpU839H330kZlYufHGG82fO+mkk+Sbb76Rd99910y/XHfddaZPw1faz7FlyxY5cOCAyYjcddddpo9D+ztef/11E+wMGzYsiH9zyisNyisAAARTTEyMmRrRHooTTzzRNHP++c9/lquuusqMrupUyYgRI0x244477pCbb77Z04eh0y06/qrf49ZbbzUBg690EkanWb777jszNaMNq9qoqsFLv3795NVXX5X+/fsH8W8uEuWyychGQUGB6ag9evSopKenh+zn3vzvFfLOyt3m9pOXD5fzT+wesp8NAGi70tJS2bp1q+Tm5vp13Dr8e6xb8/zt+PKKNTKryHQAABA8BB30dAAAEBIEHV5BRwFBBwAAQeP4oMN7esW71AIAAALL8UFH3fIKPR0A0N7YZB4iorkC9BgTdNDTAQDtkrWjori4ONyXEvGKax7j1uwFaYyj93RUVlWb81YshWVkOgCgvdBdFZmZmeZsEmv5VTBPSHVqhqO4uNg8xvpY+3s2i6ODjqKyqjofk+kAgPYlKyvLvLcCDwSHBhzWY+0PRwcdx8rrBhkEHQDQvmhmQzd6du3atc6ZJQgcLakE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kfvjAQBAmMoreXl50rlzZ4mPr52Lzs7OltLSUjl48KD5nLeysjLz5h0pAQCAyBWwTIcGFwkJdceArI+19FLfjBkzTDrGeuvZM7AjPAAAIEKDjsTERBN4eLMyGUlJSQ2+fvr06ab+Y73t3LkzUJcCAAAiubySk5Njyija1xEX5z4cSCdYNBjp1KnhWlvNgtTPjAAAgMgVsEzH0KFDJTY2VhYuXOi5b/78+TJyZOt28AMAgMgUsKAjOTlZrrrqKrnllltk9erV8vnnn8vf/vY3ufHGGwP1IwAAQDsW0OVgDz30kNxwww0yatQoSU1Nld/97nfywx/+MJA/AgAAtFOcvQIAANrf2SsAAAAhKa/4w0q4sCQMAID2w3re9qVwYpugo7Cw0LxnSRgAAO2PPo9rmaVd9HRUV1fL7t27JS0tLeAjthqFaTCjC8joF2k9Hj//8Rj6h8fPfzyG/uHxa5qGERpw6NEn0dHR7SPToRfao0ePoP4M/UXhl6XtePz8x2PoHx4///EY+ofHr3EtZTgsNJICAICQIOgAAAAh4YigQ894ueuuuzjrpY14/PzHY+gfHj//8Rj6h8cvMGzTSAoAACKbIzIdAAAg/Ag6AABASBB0AACAkIj4oKOkpESmTJlilo5169ZN7rvvvnBfUrtQXl4uQ4YMkS+++MJz35YtW2TChAmSmJgogwYNkjlz5oT1Gu1o69atctFFF5mZ9dzcXJkxY4ZZfKeWL18uI0aMMI/fsGHDZPHixeG+XFvauHGjnHvuuebf7MCBA+Wll17yfI7fwda57rrrZPz48Z6Pefx8895775klld5vl156qfkc/479E/FBx2233SarVq2SJUuWmP95Pfjgg/LKK6+E+7JsraysTC6//HJZu3at5z594rz44ovNE+n69evlpptuksmTJ5snWdQGahpwZGZmmv8xzZo1Sx5++GF56qmn5NixY3L++efLxIkTzeOn7y+88ELP+n/U/p7pY5iVlWX+3T766KMybdo0mTt3Lr+DrfTll1/K008/7fmYx893a9askQsuuED279/veXv++ef5dxwIrghWXFzsSkxMdH3++eee++655x7X6aefHtbrsrPVq1e7hg4dat7018N67P773/+6kpOTXceOHfN87YQJE1y///3vw3i19jJv3jxXQkKC+b2z/OlPf3KNGzfO9dxzz7n69Onjqq6uNvfr+759+7qeffbZMF6x/ezevds1adIkV0FBgee+iy++2PWrX/2K38FWKCsrcw0ZMsT8v+573/ueuY/Hz3dXXXWV67bbbmtwP/+O/RfRmY6VK1dKRUWFjB071nPfuHHjZOnSpT6dhudE8+bNM+lXfZXkbdGiRTJ8+HBJSUmp81iSWqw1ePBgk5ZNSkry3Kdp2aKiIvP4nXbaaZ5zhfS9/l7y+NXVvXt3eeONN0xpRWmGUrMcWq7id9B3WtbT1P+ZZ57puY/Hr3WZjgEDBjS4n3/H/ovooCMvL086d+4s8fHxnvv0QJrS0lI5ePBgWK/NrqZOnSp//etf6/yPyXosc3Jy6tynj+WuXbtCfIX21aVLFzn77LM9H2uZ6rnnnjP/4+fxaz39n/6oUaOkb9++phTAY+ibdevWmdKe/jv2xuPXusdw4cKFcuKJJ5q+oj/84Q/mBSyPof9sc+BbMGhwUX97nPWxNpjC/8eSx7FxVVVVpi9Gg9tbb71VrrjiCh6/Vnr99ddl37598n//93/y7bff8jvoA83gavPo3XffLV27dq3zOR4/32gAoT0aegjpCy+8IPn5+XLDDTeYU2Z5DP0X0UGHdhfrL4k3ffWpvFPg8O2xPHDgQIPHksexIW3Y04kpLbV88MEHpmTQ1O8ij1/Thg4dat5r897VV19tGvj4HWzeM888Y16RX3vttQ0+x79h32gmQwMMq8RnNYnriwidBOLfsX+iI/2XR19p6j9C7yhW//F16tQprNfWHh9Ljfi96WNZP9XodJrh0KzGa6+9Jm+++aacddZZ5n4eP9/s3btX3n777Qa9Mtu2bTOv3HkMm/fyyy/LihUrpEOHDmaK6v777zf9WXpbVwbw+PnGO+Cwfgc12NAXEDyG/omO9FdKsbGxpjZnmT9/vowcOdLTCATfjB492oyBalOk92Op96PWzTffbJ40df+BjtJZ9HHS//lbDcz6fsGCBTx+9WhwMWnSJNmzZ4/nvmXLlklycrKcfvrp/A62QNcB6Ki7NtHrm/Zo6U4Jvc2/Yd98/vnnpnFZM2wWDeS0P1CbSPl37CdXhLv22mtdp5xyiuu7774zI2OZmZmuV199NdyX1S54j8xWVVW5jjvuONfVV1/t2rZtm+vJJ590JSUlmdtwW7RokXnMHn/8cdf+/fs9b4cOHXIdPXrU1blzZ9edd97p2r59u3nftWtXV2FhYbgv21b092zUqFGuCy+80LV+/XrXRx995MrKynJNnz6d38E2uOuuuzwjszx+vtGR4p49e7ouu+wy16ZNm1yffvqpKycnx/XQQw/x7zgAIj7o0F+GK6+80pWSkuLq1q2b64EHHgj3JbXLoEPpk8Bpp51mdlEMGjTI9eGHH4b1+uzm1ltvNY9Z/bfevXt7ghLdfxIfH+8aPny4a+nSpeG+ZNvu6rjkkktcGRkZrtzcXLPrpKKiwnyO38G2Bx2Kx8/3fUXnnHOOKzU11QS9ut/J2s3Bv2P/cLQ9AAAIiYju6QAAAPZB0AEAAEKCoAMAAIQEQQcAAAgJgg4AABASBB0AACAkCDoAAEBIEHQAAICQIOgAAAAhQdABAABCgqADAACEBEEHAACQUPj/R1QokZgAjdUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 需求5：画图\n",
    "tmp_df[['counts']].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count      600.000000\n",
       "mean      3226.140000\n",
       "std       2034.729035\n",
       "min       1300.000000\n",
       "25%       2287.500000\n",
       "50%       2850.000000\n",
       "75%       3800.000000\n",
       "max      37000.000000\n",
       "Name: price, dtype: float64"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 需求6：租房价格均值、最大值、最小值\n",
    "# df.price.mean()\n",
    "# df.price.max()\n",
    "# df.price.min()\n",
    "df.price.describe()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>orientation</th>\n",
       "      <th>stars</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>南</td>\n",
       "      <td>4458</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  orientation  stars\n",
       "4         南     4458"
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 需求7：看房人数最多的朝向\n",
    "df.groupby('orientation',as_index=False)['stars'].sum().nlargest(1,'stars')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 需求8：房型分布情况，并绘图（细节：使用 house_type 作为 行索引）\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3.9",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.23"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
